У мене є набір даних, наведений нижче ім'я col1 col2 a 10,3 10,9 б 11 15 c 20 7.2 d 6.2 6.2 e 5,3 5,4 f 4,5 4,0 я хочу порівняти col1 та col2 мого df, і я хочу зробити ще один стовпець, в якому, порівнюючи значення col1 та col2, якщо значення col2 зростає від col1, тоді я хочу ввести збільшення поряд з ними в моєму стовпці і якщо вони зменшуючи, тоді я хочу написати зменшувальний і ніяких змін, якщо вони однакові і я хочу, щоб мій результат був таким ім'я col1 col2 col3 a 10,3 10,9 збільшується b 11 15 збільшується c 20 7.2 зменшується d 6,2 6,2 без змін e 5,3 5,4 збільшується f 4,5 4,0 зменшується
2021-01-31 08:16:03
З dplyr: df%>% мутувати (Col3 = ifelse (col2 == col1, "без змін", ifelse (col2> col1, "збільшується", "зменшується"))) Або використовуючи case_when, як запропонував @akrun: df%>% mutate (Col3 = case_when (col1 == col2 ~ "без змін", col2> col1 ~ "Збільшення", TRUE ~ "зменшується")) Результат: ім'я col1 col2 Col3 1 a 10,3 10,9 збільшується 2 б 11,0 15,0 збільшується 3 c 20,0 7,2 зменшується 4 д 6,2 6,2 без змін 5 e 5,3 5,4 збільшується 6 f 4,5 4,0 зменшується Дані: df <-structure (list (name = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA, -6 л)) | Ми можемо відняти col1 від col2, а потім за допомогою знака призначити значення df $ col3 <- c ("зменшується", "без змін", "збільшується") [знак (df $ col1 - df $ col2) + 2] df # ім'я col1 col2 col3 # 1 a 10.3 10.9 зменшується # 2 b 11,0 15,0 зменшується # 3 c 20,0 7,2 збільшується # 4 д 6,2 6,2 без змін # 5 e 5.3 5.4 зменшується # 6 f 4.5 4.0 збільшується Або використовуючи dplyr, ми можемо використовувати case_when бібліотека (dplyr) df%>% mutate (col3 = case_when (col1 == col2 ~ "без змін", col1> col2 ~ "збільшується", TRUE ~ "зменшується")) | Основа R df $ col3 <-with (df, ifelse (col1> col2, "зменшується", ifelse (col1